<?php 
error_reporting(E_ALL ^ E_NOTICE);

/**
 * ProyectosdcPostController
 * 
 * @package Sgit 
 * @author Juan Manuel Martinez Carrillo
 * @copyright Juan Manuel Martinez Carrillo
 * @version 2012
 * @access public
 * @revision 21/02/2012 9:06:
 * 
 */

class ProyectosdcPostController extends Sgit_Controller_Action
{
	
    protected $_main_model='ProyectosDCPost';
    protected $_main_form='ProyectosDCPost';
    
    protected $_subcat_comite=array( 15, 16, 17, 18 );
    protected $_subcat_prl=array( 6,12 );
    protected $_subcat_gma=array( 20,21 );
    protected $_prl_group=83;
    protected $_gma_group=81;
    
    
    function _begin(){
        
        $this->_element->ProyetosDCEstado =         new Sgit_Form_Element_Select_ProyetosDCEstado('estado');
        $this->_element->ProyetosDCCE =             new Sgit_Form_Element_Select_ProyetosDCCE('control_economico');
        $this->_element->DCDepartamentos =          new Sgit_Form_Element_Select_DCDepartamentos('id_departamento');
        $this->_element->ProyetosDCPrioridad =      new Sgit_Form_Element_Select_ProyetosDCPrioridad('prioridad');
        $this->_element->ProyetosDCSubCategorias =  new Sgit_Form_Element_Select_ProyetosDCSubCategorias('id_sub_cat');
        $this->_element->ProyetosDCCategorias =     new Sgit_Form_Element_Select_ProyetosDCCategorias('id_cat');
        $this->_element->OfertasAceptadas =         new Sgit_Form_Element_Select_OfertasAceptadas('id_oferta');

        $this->id_proyecto=$this->_getParam('id_proyecto');
        $this->view->id_proyecto=$this->id_proyecto;
        
        $this->id=$this->_getParam('id');

        $this->_file_upload[1] = Sgit_Util_FileUpload::run('gestion_tareas',$this->id_proyecto);

        if (!$this->id_proyecto)
        {
            throw new Zend_Controller_Exception(sprintf('ID Proyecto is required for %s', $this->_controllerName . ':' . $this->_actionName));
        }


    }


    protected function _rows()
    {
        
        
        $this->proyecto=$this->getProyecto($this->id_proyecto);
        $this->view->proyecto=$this->proyecto;
        
        $this->_checkPermiso($this->proyecto['accesos']);
        

         //check si prl
        $validator= new Sgit_Validate_isPrl();
        if($validator->isValid()){
            $this->_element->ProyetosDCSubCategorias = new Sgit_Form_Element_Select_ProyetosDCSubCategorias('id_sub_cat',null,$this->_subcat_prl);
            $values['id_sub_cat_in']=array_keys($this->_element->ProyetosDCSubCategorias->getMultiOptions());
        } 
        
        //check si gma
        $validator= new Sgit_Validate_isGma();
        if($validator->isValid()){
            $this->_element->ProyetosDCSubCategorias = new Sgit_Form_Element_Select_ProyetosDCSubCategorias('id_sub_cat',null,$this->_subcat_gma);
            $values['id_sub_cat_in']=array_keys($this->_element->ProyetosDCSubCategorias->getMultiOptions());
        } 
        
        
        $filtros = new Sgit_Form_Filtros();
        $filtros->addFormSelect($this->_element->ProyetosDCCategorias);
        $filtros->addFormSelect($this->_element->ProyetosDCSubCategorias);
        
        $values= array_merge((array)$values,$this->_getFiltrosValues($filtros));
        
        $filtros->addExcel();
        $filtros->myRender();

        return $this->_model->default->getTareas($this->id_proyecto,$values);
    }
    
    
    
    public function _checkPermiso($accesos)
    {

        if(empty($accesos))$accesos=array();
        else $accesos= unserialize($accesos);

 
        $validator = new Zend_Validate_InArray($accesos);
        if ($validator->isValid($this->_auth->getIdentity()->id)) {
            return true;
        } 
    
 
        //este en la lista de acceso o que sea superuser, o prl o gma

        $validatorsup= new Sgit_Validate_isSuperuser();
        if($validatorsup->isValid()){
            return true;
        }
  
        $validatorprl= new Sgit_Validate_isPrl();
        if($validatorprl->isValid()){
            return true;
        }
        
        $validatorgma= new Sgit_Validate_isGma();
        if($validatorgma->isValid()){
            return true;
        }
       
 

    
        
        throw new Zend_Controller_Exception(sprintf('Access not allowed for this project (%s)',$this->view->proyecto['proyecto']));

    }


    public function indexAction()
    {


        $rows= $this->_prepareRowsToTr($this->_rows());
        $this->view->rows = $rows;
    }



    
    public function excelAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);

        
        $rows=$this->_rows();
        $this->_checkPermiso($this->view->proyecto['accesos']);
        

        
        foreach($rows as $r)
        {
            $filas[]=$r;
            
            if($r['respuestas'])
            {
                foreach($r['respuestas'] as $v)
                {
                    $filas[]=$v;
                }
            }
        }
        
        
        
        $excel = new Sgit_Excel();
        $excel->setColumnas($this->_getXml());
        
        
        
        $excel->render($filas,$this->_controllerName);
	}



    public function insertarAction()
    {
        $this->_reload(true);
    	$this->_insertar();
    }
    
    public function editarAction()
    {
        $this->_reload(true);
    	$this->_editar();
    }
    
    public function borrarAction()
    {
        $this->_reload(true);
        
        $id = $this->_getParam('id');
        $delete=$this->_model->default->getCol('id',array('respuesta_a=?'=>$id));
        $delete[]=$id;
        
        $n = $this->_model->default->delete(array('id IN (?)'=>$delete));
        $this->postDispatch();
        
        foreach($delete as $iden){
            if($this->_file_upload){
                foreach($this->_file_upload as $filepload){
                    Sgit_Util_removeFiles::run($filepload['tabla'],$filepload['key'],$iden,'delete');
                }
            }
       
        }
        
        $json['status'] ='ok';
        $this->_helper->json($json);
    
    }
    
    
    function getProyecto($id)
    {
        $this->_loadModel('ProyectosDC');
        $v = $this->_model->ProyectosDC->GetProyecto($id);

        $v['f_entrega']= Sgit_Filter_DateDbToLocalize::filter($v['f_entrega']);
        $v['f_inicio']=  Sgit_Filter_DateDbToLocalize::filter($v['f_inicio']);
        $v['f_repla']=   Sgit_Filter_DateDbToLocalize::filter($v['f_repla']);
        $v['f_final']=   Sgit_Filter_DateDbToLocalize::filter($v['f_final']);
        
        
        $pid='P' .str_pad($v['id'], 4, "0", STR_PAD_LEFT);
        $v['proyecto']=$pid.' - '.$v['proyecto'];
        $v['area']=     $this->_element->DCDepartamentos->getMultiOption($v['id_departamento']);
        $v['estado']=   $this->_element->ProyetosDCEstado->getMultiOption($v['estado']);
        $v['prioridad']=$this->_element->ProyetosDCPrioridad->getMultiOption($v['prioridad']);
        $v['oferta']=   $this->_element->OfertasAceptadas->getMultiOption($v['id_oferta']);
        
        $v['cmi_text']=Sgit_Util_SiNo::run($v['obligatorio']);
        $v['prl_text']=Sgit_Util_SiNo::run($v['prl']);
        $v['gma_text']=Sgit_Util_SiNo::run($v['gma']);
        $v['permisos']=Sgit_Util_UnserializeUsers::run($v['accesos']);
            

        return $v;
    }
    

    protected function _prepareValuesToDb()
    {
        
        $row=$this->_form->getValues();
        
        
        if(!$this->id) $row['fecha']=new Zend_Db_Expr('NOW()');
        
        $row['id_proyecto']= $this->id_proyecto;
        $row['id_usuario']= $this->_auth->getIdentity()->id;
	

		//objeto cambio
        //en el array solo las id_cat que van a comite
		if (in_array( $row['id_sub_cat'], $this->_subcat_comite ) )
		{
			$row['objeto_cambio'] = 1;
			$row['fecha_peticion_cambio'] =  date( "Y-m-d" );
		}else{
		    $row['objeto_cambio'] = null;
			$row['fecha_peticion_cambio'] = null;
		}


        $respuesta_a=$this->_getParam('respuesta_a');
        if($respuesta_a) $row['respuesta_a'] = $respuesta_a;
     
     
        
        Sgit_Util_removeFiles::run($this->_file_upload[1]['tabla'],$this->_file_upload[1]['key'],$this->_id,$row[$this->_file_upload[1]['activo']]);
      
         
        unset($row[$this->_file_upload[1]['name']]);
        unset($row[$this->_file_upload[1]['activo']]);
        


        return $row;
    }
    
    
    
    

    function _afterAddEdit()
    {

        $post = $this->_model->default->getTareas($this->id_proyecto,'',$this->_id);      
        $row=$post[0];
        
        
        
        $proyecto = $this->getProyecto($this->id_proyecto);
        
        $server=$this->getRequest()->getServer('SERVER_NAME');
        
        $accesos=unserialize($proyecto['accesos']);
        
        
        
        
        //add PRl
        if(in_array($row['id_sub_cat'],$this->_subcat_prl))
        {
           $addprl=Sgit_Util_UserByGroup::run($this->_prl_group);
        }
        
        //add gma
        if(in_array($row['id_sub_cat'],$this->_subcat_gma)){
           $addgma=Sgit_Util_UserByGroup::run($this->_prl_group);
        }
        
        
        if($row['cat'] || $row['subcat']){
            $cat='<b>'.$row['cat'].' '.$row['subcat'].'</b><br>';
        }


        $destinatariosCC=array_merge((array)$accesos,(array)$addprl,(array)$addgma);
        
        
       
        if($row['respuesta_a'])
        {
            $respuestas = $this->_model->default->getTareas($this->id_proyecto,'',$row['respuesta_a']);   
            $respuesta=$respuestas[0];
            $entrada['destinatarios']=$respuesta['id_usuario'];
        }
        
        

        
        $mail=new Sgit_Mail();
        $entrada['de']=$this->_auth->getIdentity()->id;
        $entrada['destinatariosCC']=$destinatariosCC;
        $entrada['asunto']=$proyecto['codigo_zona'] . ' '. $proyecto['proyecto'];
        $entrada['body']=$cat.$row['notas'];
        $entrada['ira']="http://$server/proyectosdc-post/index/id_proyecto/".$this->id_proyecto.'#'.$this->_id;
        $entrada['id_zona']=$proyecto['id_zona'];
        $entrada['adjuntos'] = Sgit_Util_getFiles::run('gestion_tareas',$this->id_proyecto, $this->_id,true);
         
      
        $mail->sendMsg($entrada);
       
    }
 
    function getNotas()
    {
        
    }


}


